package ar.edu.unq.edp.futbol.entregas;


import org.hibernate.stat.Statistics;

import ar.edu.unq.edp.futbol.mains.SharedSessionFactory;
import ar.edu.unq.edp.futbol.usuarios.ConsultorEntrega5Performante;
import ar.edu.unq.edp.futbol.usuarios.UsuarioMassivePonedor;

public class Entrega6 {

	private static String equipo1 = "alfa";
	private static String equipo2 = "beta";
	private static String equipo3 = "gama";
	private static String equipo4 = "Omega";

	public static void main(String[] args) {
		Statistics stats =  SharedSessionFactory.getInstance().getStatistics();
		//insertar los datos
//		loadDatos();
		//ejecutar query -- requiere insertar los datos
		ejecutarQuery();
		//la segunda vez es para verificar la efectividad de la cache
		ejecutarQuery();
	
////////////////////////////////////////////////
		//mostrar las estadisticas de la cache
		System.out.println("query hits: "+stats.getQueryCacheHitCount());
		System.out.println("query miss: "+stats.getQueryCacheMissCount());
	}

	private static void loadDatos() {
		Thread usuarioPonedorMasivo = new Thread(new UsuarioMassivePonedor(equipo1, equipo2,equipo3,equipo4)); 
		
		usuarioPonedorMasivo.start();
	}

	private static void ejecutarQuery() {
		Thread consultorThread = new Thread(new ConsultorEntrega5Performante(equipo1, equipo2, equipo3, equipo4));
		
		// y descomenta esta para analizar los resultados
		long time  = System.currentTimeMillis();
		consultorThread.start();
		try {
			consultorThread.join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("La consulta demoran : "+(System.currentTimeMillis() - time));
	}
	
	
}